import { query } from '../../config/db.js';
import logger from '../../config/logger.js';
import bcrypt from 'bcrypt';

async function seedUsers() {
  try {
    logger.info('开始播种用户数据...');

    // 先清空用户表
    // 禁用外键约束
    await query('SET FOREIGN_KEY_CHECKS = 0');
    await query('TRUNCATE TABLE users');
    // 启用外键约束
    await query('SET FOREIGN_KEY_CHECKS = 1');
    // MySQL不支持RESTART IDENTITY，需要重置自增序列
    await query('ALTER TABLE users AUTO_INCREMENT = 1');
    logger.info('用户表已清空');

    // 加密密码
    const hashedPassword = await bcrypt.hash('admin123', 10);

    // 插入管理员用户
    await query(
      'INSERT INTO users (username, password, email) VALUES (?, ?, ?)',
      ['admin', hashedPassword, 'admin@example.com']
    );
    logger.info('管理员用户已创建');

    // 插入普通用户
    const userPassword = await bcrypt.hash('user123', 10);
    await query(
      'INSERT INTO users (username, password, email) VALUES (?, ?, ?)',
      ['user', userPassword, 'user@example.com']
    );
    logger.info('普通用户已创建');

    logger.info('用户数据播种完成');
  } catch (error) {
    logger.error('用户数据播种失败:', error);
    throw error;
  }
}

export default seedUsers;